package com.xixibaby.validator;

import java.util.Objects;
import java.util.function.BiPredicate;
import java.util.regex.Pattern;

public enum ValidEnum {
    /**
     * 不是空的 字符串不能是 “” 不能是null
     */
    NOTEMPTY((x,y) -> Objects.nonNull(y),"字段[{}]不能为空也不能是空字符串"),
    /**
     * 允许 空串 但是 不允许null
     */
    NOTNULL((x,y) -> null != y,"字段[{}]不能为空"),
    /**
     * y  in  x
     */
    IN((x,y) ->  x.contains( y.toString()),"字段[{}]必须在[{}]里面"),
    /**
     * y.eq x
     */
    EQUEL((x,y)-> Objects.nonNull(y) && y.toString().equals(x),"字段[{}]必须等于[{}]"),
    /**
     * !y.eq x
     */
    NOTEQUEL((x,y)-> Objects.nonNull(y) && !y.toString().equals(x),"字段[{}]不能等于[{}]"),
    /**
     * 不验证
     */
    NULL((x,y) -> true,""),
    /**
     * 正则
     */
    PATTERN((x,y) -> Objects.nonNull(y) && Pattern.matches(x, y.toString()),"正则匹配错误");

    private BiPredicate<String,Object> valid;

    private String message;

    public String getMessage() {
        return message;
    }

    public BiPredicate<String,Object> getValid() {
        return valid;
    }

    ValidEnum(BiPredicate<String,Object> valid, String message){
        this.valid=valid;
        this.message = message;
    }

}